package com.zeny.express.framework.core.mybatis.dialect;

import java.util.Map;

/**
 * Mysql方言的实现
 * 
 * @author zhuwei
 * @date 2013年8月18日 上午8:09:43
 */
public class MySQLDialect implements Dialect {

	/**
	 * 数据库本身是否支持分页
	 * 
	 * @author zhuwei
	 * @date 2013年8月18日 上午8:10:16
	 * @see com.zeny.express.framework.core.mybatis.dialect.Dialect#supportsLimit()
	 */
	@Override
	public boolean supportsLimit() {
		return true;
	}

	/**
	 * 转换为分页SQL
	 * 
	 * @author zhuwei
	 * @date 2013年8月18日 下午4:59:45
	 * @see com.zeny.express.framework.core.mybatis.dialect.Dialect#getLimitString(java.lang.String,
	 *      int, int, java.util.Map)
	 */
	public String getLimitString(String sql, int offset, int limit,
			Map<String, String> orderMap) {

		StringBuilder sqlPaging = new StringBuilder(sql);

		// 排序功能
		if (orderMap != null && orderMap.size() > 0) {
			sqlPaging.append(" ORDER BY ");

			for (Map.Entry<String, String> entry : orderMap.entrySet()) {
				sqlPaging.append(entry.getKey()).append(" ")
						.append(entry.getValue()).append(",");
			}
			sqlPaging.deleteCharAt(sqlPaging.length() - 1);
		}

		sqlPaging.append(" LIMIT ");
		if (offset > 0) {
			sqlPaging.append(offset).append(",").append(limit);
		} else {
			sqlPaging.append(limit);
		}
		return sqlPaging.toString();
	}

}
